package com.ruicar.afs.cloud.vehicle.feign;

import com.alibaba.fastjson.JSONObject;
import com.ruicar.afs.cloud.vehicle.dto.CarInfoDto;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * @description: 对接长城车型库
 * @author: sijun.yu
 * @date: 2020/6/4 10:32
 */
@FeignClient(name = "vehicle", url = "${com.greatwall.systems.vehicle-system.url}")
public interface VehicleApiFeign {

    /**
     * 二手车进件接口
     *
     * @param dto
     * @return
     */
    @ApiOperation("二手车进件接口")
    @PostMapping(value = "/vin/usedCar")
    JSONObject usedCar(@RequestBody CarInfoDto dto);

    /**
     * vin数据查询，全品牌新车放款审批，返回对应车型关键参数HTML的URL
     *
     * @return
     */
    @ApiOperation("vin数据查询，全品牌新车放款审批，返回对应车型关键参数HTML的URL")
    @PostMapping(value = "/vin/newCarKeyParameters")
    JSONObject newCarKeyParameters(@RequestBody CarInfoDto dto);

    /**
     * 系统车型库、资产及码表同步参数接口
     *
     * @param dto
     * @return
     */
    @ApiOperation("系统车型库、资产及码表同步参数接口")
    @PostMapping(value = "/brandAndCode")
    JSONObject brandAndCode(@RequestBody CarInfoDto dto);

    /**
     * 车价查询接口-Json
     *
     * @param dto
     * @return
     */
    @ApiOperation("车价查询接口")
    @PostMapping(value = "/carprice/cjcxjson")
    JSONObject cjcxjson(@RequestBody CarInfoDto dto);

    /**
     * 车价查询接口-Url
     *
     * @param dto
     * @return
     */
    @ApiOperation("车价查询接口")
    @PostMapping(value = "/carprice/cjcxurl")
    JSONObject cjcxurl(@RequestBody CarInfoDto dto);

    /**
     * 车e估估值报告-Json
     *
     * @param dto
     * @return
     */
    @ApiOperation("车e估估值报告")
    @PostMapping(value = "/vinpgbg/pgbgjson")
    JSONObject pgbgjson(@RequestBody CarInfoDto dto);

    /**
     * 车e估估值报告-Url
     *
     * @param dto
     * @return
     */
    @ApiOperation("车e估估值报告")
    @PostMapping(value = "/vinpgbg/pgbgurl")
    JSONObject pgbgurl(@RequestBody CarInfoDto dto);

    /**
     * 网约车车型API接口
     *
     * @param dto
     * @return
     */
    @ApiOperation("网约车车型API接口")
    @PostMapping(value = "onlinecar/onlineCarList")
    JSONObject onlineCarList(@RequestBody CarInfoDto dto);

    /**
     * 估值报告返回不一致字段名称
     *
     * @param dto
     * @return
     */
    @ApiOperation("估值报告返回不一致字段名称")
    @PostMapping(value = "vinpgbg/pgbg")
    JSONObject pgbg(@RequestBody CarInfoDto dto);

    /**
     * vin解析json结果返回
     *
     * @param dto
     * @return
     */
    @ApiOperation("vin解析json结果返回")
    @PostMapping(value = "/vinpage/vinparamJson")
    JSONObject vinparamJson(@RequestBody CarInfoDto dto);

}
